UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有:
1,UISwipeGestureRecognizer:滑动(快速移动)123456789101112131415161718class
ViewController``: ``UIViewController
{``
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``let
swipe = ``UISwipeGestureRecognizer``(target:``self``, action:``Selector``(``"swipe:"``))`` ``swipe.direction = ``UISwipeGestureRecognizerDirection``.``Up`` ``self``.view.addGestureRecognizer(swipe)`` ``}``
``func
swipe(recognizer:``UISwipeGestureRecognizer``){`` ``print``(``"swipe ok"``)`` ``var
point=recognizer.locationInView(``self``.view)`` ``//这个点是滑动的起点`` ``print``(point.x)`` ``print``(point.y)`` ``}``}
注意1:如果UISwipeGestureRecognizer在不指定方向的时候,默认向右滑动才会触发事件。如果要指定方向,需要设置direction属性12//表示监听滑动的方向为向上``swipe.direction = ``UISwipeGestureRecognizerDirection``.``Up
注意2:有网友问如果各个方向都要响应怎么办,只要多定义几个UISwipeGestureRecognizer就可以了123456789101112131415161718192021222324252627class
ViewController``: ``UIViewController
{``
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``let
swipeUp = ``UISwipeGestureRecognizer``(target:``self``, action:``Selector``(``"swipe:"``))`` ``swipeUp.direction = ``UISwipeGestureRecognizerDirection``.``Up`` ``self``.view.addGestureRecognizer(swipeUp)``
``let
swipeDown = ``UISwipeGestureRecognizer``(target:``self``, action:``Selector``(``"swipe:"``))`` ``swipeDown.direction = ``UISwipeGestureRecognizerDirection``.``Down`` ``self``.view.addGestureRecognizer(swipeDown)`` ``}``
``func
swipe(recognizer:``UISwipeGestureRecognizer``){`` ``if
recognizer.direction == ``UISwipeGestureRecognizerDirection``.``Up``{`` ``print``(``"向上滑动"``)`` ``}``else
if
recognizer.direction == ``UISwipeGestureRecognizerDirection``.``Down``{`` ``print``(``"向下滑动"``)`` ``}``
``let
point=recognizer.locationInView(``self``.view)`` ``//这个点是滑动的起点`` ``print``(point.x)`` ``print``(point.y)`` ``}``}
2,UITapGestureRecognizer:轻点手势(点击)
(1)可以通过numberOfTouchesRequired属性设置触摸点数,比如设置2表示必须两个手指触摸时才会触发
(2)通过numberOfTapsRequired属性设置点击次数,单击设置为1,双击设置为2
(3)如果一个控件既监听了单击事件也监听了双击事件,默认当双击事件触发的时候也同时会触发单击事件。如果想双击时不触发单击,需要通过requireGestureRecognizerToFail进行设置
1234567891011121314151617181920212223242526272829class
ViewController``: ``UIViewController
{``
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``//单击监听`` ``let
tapSingle=``UITapGestureRecognizer``(target:``self``,action:``"tapSingleDid"``)`` ``tapSingle.numberOfTapsRequired=1`` ``tapSingle.numberOfTouchesRequired=1`` ``//双击监听`` ``let
tapDouble=``UITapGestureRecognizer``(target:``self``,action:``"tapDoubleDid:"``)`` ``tapDouble.numberOfTapsRequired=2`` ``tapDouble.numberOfTouchesRequired=1`` ``//声明点击事件需要双击事件检测失败后才会执行`` ``tapSingle.requireGestureRecognizerToFail(tapDouble);`` ``self``.view.addGestureRecognizer(tapSingle)`` ``self``.view.addGestureRecognizer(tapDouble)`` ``}``
``func
tapSingleDid(){`` ``print``(``"单击了"``)`` ``}``
``func
tapDoubleDid(sender:``UITapGestureRecognizer``){`` ``if
sender.view == ``self``.view{`` ``print``(``"双击了"``)`` ``}`` ``} ``}
3,UIPinchGestureRecognizer:捏合手势(两个手指进行放大缩小)1234567891011121314151617class
ViewController``: ``UIViewController
{ ``
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``//设置监听方法为pinchDid方法`` ``let
pinch=``UIPinchGestureRecognizer``(target:``self``,action:``"pinchDid:"``)`` ``self``.view.addGestureRecognizer(pinch)``
`
}
func` `pinchDid(recognizer:
UIPinchGestureRecognizer)
{
//在监听方法中可以实时获得捏合的比例
print
(recognizer.scale);``}
}4,UIRotationGestureRecognizer:旋转手势(两个手指进行旋转)1234567891011121314
class`ViewController``: ``UIViewController
{
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``let
rotation=``UIRotationGestureRecognizer``(target:``self``,action:``"rotationDid:"``)`` ``self``.view.addGestureRecognizer(rotation)`` ``}``
``func
rotationDid(recognizer:``UIRotationGestureRecognizer``){`` ``//旋转的弧度转换为角度`` ``print``(recognizer.rotation*(180/``CGFloat``(``M_PI``)))`` ``}``}
5,UIPanGestureRecognizer:拖动手势1234567891011121314151617181920212223class
ViewController``: ``UIViewController
{``
``var
rect:``UIView``!``
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``rect=``UIView``(frame:``CGRectMake``(0, 0, 100, 100))`` ``rect.center=``self``.view.center`` ``rect.backgroundColor=``UIColor``.redColor()`` ``self``.view.addSubview(rect)``
``let
pan = ``UIPanGestureRecognizer``(target:``self``,action:``"panDid:"``)`` ``pan.maximumNumberOfTouches=1`` ``rect.addGestureRecognizer(pan)`` ``}``
``func
panDid(recognizer:``UISwipeGestureRecognizer``){`` ``let
point=recognizer.locationInView(``self``.view)`` ``//设置矩形的位置`` ``rect.center=point`` ``}``}
6,UILongPressGestureRecognizer:长按1234567891011121314151617181920import
UIKit
class
ViewController``: ``UIViewController
{``
``override
func
viewDidLoad() {`` ``super``.viewDidLoad()``
``//长按监听`` ``let
longPress=``UILongPressGestureRecognizer``(target:``self``,action:``"longPressDid:"``)`` ``self``.view.addGestureRecognizer(longPress)`` ``}``
``func
longPressDid(sender: ``UILongPressGestureRecognizer``){`` ``if
sender.state == .``Began
{`` ``print``(``"长按响应开始"``)`` ``} ``else
{`` ``print``(``"长按响应结束"``)`` ``}`` ``}``}
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_546.html
Swift iOS- 手势检测详解
CSDN原文:http://blog.csdn.net/offbye/article/details/50888869
CSDN阅读数:1035
Title:Swift iOS- 手势检测详解
Author:offbye
Created:2016-03-14, 18:58:00
Updated:2016-05-13, 00:40:04
Full URL:http://offbye.com/2016/03/14/Swift iOS- 手势检测详解/
License: "CC BY-NC-SA 4.0" Keep Link & Author if Distribute.
CSDN原文: http://blog.csdn.net/offbye/article/details/50888869
CSDN PV:1035